package com.fowo.api.model.sales.outbound;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 销售出库单 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class SalesOutboundImportPo {

  /** 销售出库单号 */
  @ExcelProperty("销售出库单号")
  private String salesReleaseNumber;

  /** 系统单号 */
  @ExcelProperty("系统单号")
  @Size(max = 50, message = "系统单号长度不能超过50")
  private String systemMenuSymbol;

  /** 状态 */
  @ExcelProperty("状态")
  private String status;

  /** 波次号 */
  @ExcelProperty("波次号")
  private String secondHarmonicSignal;

  /** 平台单号 */
  @ExcelProperty("平台单号")
  private String platformNumber;

  /** 物流商 */
  @ExcelProperty("物流商")
  @EnumsString(
    value = { "EBO", "速卖通" },
    message = "物流商只能是“EBO”, “速卖通”中的一个"
  )
  private String logisticsProvider;

  /** 物流方式 */
  @ExcelProperty("物流方式")
  @Size(max = 50, message = "物流方式长度不能超过50")
  private String transport;

  /** 标签 */
  @ExcelProperty("标签")
  @Size(max = 50, message = "标签长度不能超过50")
  private String tally;

  /** 店铺 */
  @ExcelProperty("店铺")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String shopShopName;

  @ExcelIgnore
  @Schema(title = "店铺")
  private String shop;

  /** 站点 */
  @ExcelProperty("站点")
  @Size(max = 50, message = "站点长度不能超过50")
  private String site;

  /** 平台 */
  @ExcelProperty("平台")
  @Size(max = 50, message = "平台长度不能超过50")
  private String terrace;

  /** 出库时间 */
  @ExcelProperty("出库时间")
  @DateTimeString(message = "出库时间不是有效的时间日期格式")
  private String deliveryTime;

  /** 发货员 */
  @ExcelProperty("发货员")
  private String shippingClerkOrderSn;

  @ExcelIgnore
  @Schema(title = "发货员")
  private String shippingClerk;

  /** 目的地 */
  @ExcelProperty("目的地")
  @Size(max = 50, message = "目的地长度不能超过50")
  private String bourn;

  /** 税号 */
  @ExcelProperty("税号")
  @Size(max = 50, message = "税号长度不能超过50")
  private String ird;

  /** settlement_id */
  @ExcelProperty("settlement_id")
  @Size(max = 50, message = "settlement_id长度不能超过50")
  private String settlementId;

  /** 结算编号 */
  @ExcelProperty("结算编号")
  @Size(max = 50, message = "结算编号长度不能超过50")
  private String fid;

  /** 订单号 */
  @ExcelProperty("订单号")
  @Size(max = 100, message = "订单号长度不能超过100")
  private String amazonOrderId;

  /** 配送方式 */
  @ExcelProperty("配送方式")
  @Size(max = 50, message = "配送方式长度不能超过50")
  private String fulfillment;

  /** 国家 */
  @ExcelProperty("国家")
  @Size(max = 50, message = "国家长度不能超过50")
  private String countryCode;

  /** 报告类型 */
  @ExcelProperty("报告类型")
  @Size(max = 50, message = "报告类型长度不能超过50")
  private String accountType;

  /** 来源 */
  @ExcelProperty("来源")
  @Size(max = 50, message = "来源长度不能超过50")
  private String eventType;

  /** 亚马逊店铺编号 */
  @ExcelProperty("亚马逊店铺编号")
  @Size(max = 50, message = "亚马逊店铺编号长度不能超过50")
  private String sellerId;

  /** MSKU */
  @ExcelProperty("MSKU")
  @Size(max = 500, message = "MSKU长度不能超过500")
  private String sellerSku;

  /** sku */
  @ExcelProperty("sku")
  @Size(max = 100, message = "sku长度不能超过100")
  private String localSku;

  /** 品名 */
  @ExcelProperty("品名")
  @Size(max = 500, message = "品名长度不能超过500")
  private String localName;

  /** 交易类型 */
  @ExcelProperty("交易类型")
  @Size(max = 50, message = "交易类型长度不能超过50")
  private String type;

  /** 结算时间 */
  @ExcelProperty("结算时间")
  @DateTimeString(message = "结算时间不是有效的时间日期格式")
  private String postedDateLocale;

  /** 币种 */
  @ExcelProperty("币种")
  private String currencyCode;

  /** 金额 */
  @ExcelProperty("金额")
  @DecimalString(message = "金额小数格式不正确", label = "金额")
  private String currencyAmount;

  /** 数量 */
  @ExcelProperty("数量")
  @IntegerString(message = "数量数值格式不正确", label = "数量")
  private String quantity;

  /** 结算状态 */
  @ExcelProperty("结算状态")
  private String processingStatus;

  /** 转账状态 */
  @ExcelProperty("转账状态")
  private String fundTransferStatus;

  /** 修改时间 */
  @ExcelProperty("修改时间")
  @DateTimeString(message = "修改时间不是有效的时间日期格式")
  private String gmtModified;

  /** 组织 */
  @ExcelProperty("组织")
  @Size(max = 50, message = "组织长度不能超过50")
  private String deptName;

  @ExcelIgnore
  @Schema(title = "组织")
  private String dept;

  /** 当期出库成本金额 */
  @ExcelProperty("当期出库成本金额")
  @DecimalString(
    message = "当期出库成本金额小数格式不正确",
    label = "当期出库成本金额"
  )
  private String currentIssueCostAmount;

  /** 来源表主键 */
  @ExcelProperty("来源表主键")
  @Size(max = 50, message = "来源表主键长度不能超过50")
  private String sourceId;

  /** 产品id */
  @ExcelProperty("产品id")
  @LongString(message = "产品id数值格式不正确", label = "产品id")
  private String productId;

  /** 店铺id */
  @ExcelProperty("店铺id")
  @LongString(message = "店铺id数值格式不正确", label = "店铺id")
  private String sid;

  /** 店铺名称 */
  @ExcelProperty("店铺名称")
  @Size(max = 100, message = "店铺名称长度不能超过100")
  private String sellerName;
}
